/**
 * DataCfgReq
 */
export interface IDataLoadForm {
  /**
   * 查询字段
   */
  columns?: string[];
  colnumNames?: string[];
  conditions?: IConditions;
  /**
   * 数据源表名
   */
  tableName?: string;
}

/**
 * Conditions，执行条件
 */
export interface IConditions {
  /**
   * 条件
   */
  conditions: Condition[];
  conjs?: Conj[];
  splitIndexes?: number[];
}

/**
 * Condition，条件
 */
export interface Condition {
  /**
   * 左边表达式
   */
  left: string;
  /**
   * 运算符
   */
  operator: Operator;
  /**
   * 右边表达式
   */
  right?: string;
  /**
   * 右边表达式类型
   */
  rightType?: RightType;
}

/**
 * 运算符
 */
export enum Operator {
  Eq = 'EQ',
  Ge = 'GE',
  Gt = 'GT',
  In = 'IN',
  IsEmpty = 'IS_EMPTY',
  IsNotEmpty = 'IS_NOT_EMPTY',
  LE = 'LE',
  Like = 'LIKE',
  Lt = 'LT',
  Neq = 'NEQ',
  NotIn = 'NOT_IN',
  NotLike = 'NOT_LIKE'
}

/**
 * 右边表达式类型
 */
export enum RightType {
  Constant = 'CONSTANT',
  Expression = 'EXPRESSION',
  Variable = 'VARIABLE'
}

export enum Conj {
  And = 'AND',
  Or = 'OR'
}

/**
 * VariableReq，变量列表
 */
export interface VariableReq {
  /**
   * 字段作用域 0: 请求, 1: 响应
   */
  fieldScope?: FieldScope;
  /**
   * 初始值
   */
  initValue?: string;
  /**
   * 字段中文名
   */
  varLabel: string;
  /**
   * 字段名称
   */
  varName: string;
  /**
   * 字段类型 0: 字符, 1: 整数, 2:浮点数
   */
  varType: VarType;
}

/**
 * 字段作用域 0: 请求, 1: 响应
 */
export enum FieldScope {
  Request = 'REQUEST',
  Response = 'RESPONSE'
}

/**
 * 字段类型 0: 字符, 1: 整数, 2:浮点数
 */
export enum VarType {
  Boolean = 'BOOLEAN',
  DateTime = 'DATE_TIME',
  Decimal = 'DECIMAL',
  Integer = 'INTEGER',
  List = 'LIST',
  Object = 'OBJECT',
  String = 'STRING',
  Date = 'DATE',
  Enum = 'ENUM'
}
